home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / et / et3_0-a1.lha / et3 / src / Invariant.h < prev    next >
C/C++ Source or Header  |  1992-04-27  |  996b  |  35 lines

  1. #ifndef Invariant_First
  2. #ifdef __GNUG__
  3. //pragma once
  4. #pragma interface
  5. #endif
  6. #define Invariant_First
  7.  
  8. #include "Types.h"
  9. #include "Error.h"
  10.  
  11. #ifdef NO_INVCHECK
  12. #   define InvariantChecker(name) 
  13. #   define AssertInvariant(name)                     
  14.  
  15. #else
  16.  
  17. #   define InvariantChecker(name)                               \
  18. class _NAME2_(name,InvChecker) {                                \
  19.     name *obj;                                                  \
  20. public:                                                         \
  21.     _NAME2_(name,InvChecker)(name *o)                           \
  22.     {  obj= o; obj->CheckInvariant(); }                     \
  23.     ~_NAME2_(name,InvChecker)()                                 \
  24.     {  obj->CheckInvariant(); }                             \
  25. }                                                            
  26.  
  27. #   define AssertInvariant(name)                                \
  28.     _NAME2_(name,InvChecker)  __checkInv(this)                        
  29.  
  30. #endif 
  31.  
  32.  
  33. #endif
  34.    
  35.